/**
 * 重写Ext.form.TextField的字符串长度验证
 * 一个中文算2个字符长度
 * 适用于Extjs 2.3
 */
Ext.override(Ext.form.TextField,{
 validateValue: function(value){
        if(value.length < 1 || value === this.emptyText){ // if it's blank
             if(this.allowBlank){
                 this.clearInvalid();
                 return true;
             }else{
                 this.markInvalid(this.blankText);
                 return false;
             }
        }
        var valueLength=fucCheckLength(value);
        if(valueLength< this.minLength){
            this.markInvalid(String.format(this.minLengthText+valueLength+"/"+this.minLength, this.minLength));
            return false;
        }
        if(valueLength> this.maxLength){
            this.markInvalid(String.format(this.maxLengthText+valueLength+"/"+this.maxLength, this.maxLength));
            return false;
        }
        if(this.vtype){
            var vt = Ext.form.VTypes;
            if(!vt[this.vtype](value, this)){
                this.markInvalid(this.vtypeText || vt[this.vtype +'Text']);
                return false;
            }
        }
        if(typeof this.validator == "function"){
            var msg = this.validator(value);
            if(msg !== true){
                this.markInvalid(msg);
                return false;
            }
        }
        if(this.regex && !this.regex.test(value)){
            this.markInvalid(this.regexText);
            return false;
        }
        return true;
    }
});

/**计算字符串长度，1个中文=2个字符长度*/
function fucCheckLength(strTemp) {
 var i, sum;
 sum = 0;
 for (i = 0; i < strTemp.length; i++) {
  if ((strTemp.charCodeAt(i) >= 0) && (strTemp.charCodeAt(i) <= 255))
   sum = sum + 1;
  else
   sum = sum + 2;
 }
 return sum;
}

/**
 * 内容实体管理
 * 
 * @author liuxl
 * @email lxl_it@163.com
 * @version 1.0
 * @namespace Ext.ux
 * @class Ext.ux.EntityItem
 * @param categoryId
 *            栏目id
 * @return {}
 */
Ext.namespace('Ext.ux');
Ext.ux.EntityItemXuanShi = function(categoryId) {
	var t_invalid = "标题过长，当前字符数为";
	var title_label= new Ext.form.Label({
		 text:'标题:'
	 });
	 
	 var title_text = new Ext.form.TextField({
		name : 'title_text',
		width : 150,
		emptyText : '请输入关键词!',
		listeners : {
			'specialkey' : function(field, e) {
				if (e.getKey() == Ext.EventObject.ENTER) {
					searchEntity();
				}
			}
		}
	});
    var searchEntity = function() {
    	//alert( start_time.getRawValue() );
    	ds1.baseParams.title = title_text.getValue();
    	//ds.baseParams.startTime = start_time.getRawValue();
    	//ds.baseParams.endTime = end_time.getRawValue();
    	ds1.load({params : {start : 0,limit : 20}});
    };  
   	var cover_date = function(value) {
		if (value == null || value == 0) {
			return 'null';
		} else {
			return value.substring(0,4) + "-" + value.substring(4,6) + "-"+ value.substring(6,8) + " "+ value.substring(8,10)+ ":"+ value.substring(10,12);
		}
	};
	var len = function(str){
		var temp = str;
		return temp.replace(/[^\x00-\xff]/g, "**").length;
	}
    var btn_search_entity = new Ext.Button({
    	text : '查询',
    	cls : 'x-btn-text-icon',
		icon : '/static/images/desktop/icons/fam/query.gif',
    	handler : searchEntity
    });
	/**
	 * 内容管理
	 */
      var desktop = MyDesktop.getDesktop();
	// 定义一个JsonReader对象，用于表格列表数据显示，即grid对象
	var _jsonReader1 = new Ext.data.JsonReader({
				root : 'results',
				totalProperty : 'totalCount'
			}, [{
						name : 'entityItemId'
					}, {
						name : 'entityName'
					}, {
						name : 'entityCreatetime'
					}, {
						name : 'entityArticleKeyword'
					}, {
						name : 'isTop'
					}, {
						name : 'copyCount'
					}, {
						name : 'isCurrent'
					}, {
						name : 'entityArticleAuthor'
					}]);
	var ds1 = getDs('/admin/entityItem.jhtml?method=entityItemArticleList&categoryId='
					+ categoryId + '&key=entityitem',_jsonReader1);

	// 定义列头信息
	var cm1 = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(),
					new Ext.grid.CheckboxSelectionModel(), {
						header : "编号",
						width : 50,
						sortable : true,
						dataIndex : 'entityItemId'
				}	, {
						header : "标题",
						sortable : true,
						dataIndex : 'entityName'
					}, {
						header : "关键字",
						width : 100,
						sortable : true,
						dataIndex : 'entityArticleKeyword'
					}, {
						header : "责任编辑",
						width : 60,
						sortable : true,
						dataIndex : 'entityArticleAuthor'
					}, {
						header : "创建时间",
						width : 100,
						sortable : true,
						dataIndex : 'entityCreatetime',
						renderer:cover_date
				}]);
	// ////////////////////////////
	var grid1 = new Ext.grid.GridPanel({
		region : "center",
		cm : cm1,
		sm : new Ext.grid.CheckboxSelectionModel(),
		border : false,
		loadMask : { // 加载数据时出险遮罩时状态条上呈现的等待信息
			msg : "数据加载中，请稍等..."
		},
		store : ds1,
		viewConfig : {
			forceFit : true
		},
		bbar : golbalBBar(ds1,20),
		tbar : [{
			text : '增加',
			tooltip : '增加一列',
			iconCls : 'add',
			handler : function() {
				var addForm = new Ext.FormPanel({
					border : false,
					labelSeparator : '：',
					frame : true,
					labelWidth : 75,
					labelAlign : 'left',
					buttonAlign : 'right',
					bodyStyle : 'padding:5px',
					width : 350,
					autoScroll : true,
					fileUpload : true, // 允许上传文件
					items : [ {
								xtype : 'textfield',
								fieldLabel : '标题',
								id:'entityName',
								name : 'entityName',
								allowBlank : false,
								blankText : '标题不能为空！',
								maxLength : 26,
								maxLengthText : t_invalid,
								anchor : '96%'
							}, {
								xtype : 'textfield',
								fieldLabel : '关键词',
								name : 'entityArticleKeyword',
								anchor : '96%'
							}, {
								xtype : 'textfield',
								fieldLabel : '编辑',
								name : 'entityArticleAuthor',
								anchor : '96%'
							}, {
								xtype : 'textarea',
								fieldLabel : '摘要',
								name : 'entityDesc',
								anchor : '96%'
							}, {
								xtype : 'textfield',
								fieldLabel : '来源',
								name : 'entityArticleSubtitle',
								anchor : '96%'
							}, {
								xtype : 'textfield',
								inputType : 'file',
								fieldLabel : '图片',
								name : 'file',
								anchor : '96%'
							}, {
								xtype : 'textfield',
								inputType : 'file',
								fieldLabel : '小视频',
								name : 'videoFile',
								anchor : '96%'
							}, {
								xtype : 'textfield',
								inputType : 'file',
								fieldLabel : '中视频',
								name : 'videoAndroidFile',
								anchor : '96%'
							}, {
								xtype : 'textfield',
								inputType : 'file',
								fieldLabel : '大视频',
								name : 'LBFile',
								anchor : '96%'
							}],
					buttons : [{
						id : 'btnSave',
						text : '保 存',
						handler : function() {

							if (addForm.form.isValid())// 客户端先验证数据
							{
								addForm.form.doAction('submit', {
									url : '/admin/entityItem.jhtml?method=saveEntityItemXuanShiByArticle',
									method : 'post',
									params : {
										categoryId : categoryId
									},
									waitTitle : '请稍候',
									waitMsg : '正在提交表单数据，请稍候...',
									success : function(form, action) {
										//alert("操作成功!");
										addForm.form.reset();
										this.disabled = false;
										addwin.close();
										loadDs(ds1,20);
									},
									failure : formError
								})
							}
						}

					}, {
						text : '取 消',
						handler : function() {
							addwin.close();
						}
					}]
				});
				
				addwin = desktop.createWindow({
							xtype : 'window',
							title : '添加信息',
							buttonAlign : 'right',
							closable : true,
							layout : 'fit',
							modal : 'true',
							width : 320,
							height : 380,
							closeAction : 'close',
							plain : true,
							//maximized : true,
							items : [addForm]
						});
				addwin.show();

			}
		}, '-', {
			text : '修改',
			tooltip : '修改选择的一行内容',
			cls : 'x-btn-text-icon',
			icon : '/static/images/desktop/icon/165518105.gif',
			handler : function() {
				var row = grid1.getSelections();
				if (row == 0) {
					getAlertMessage("提示","请确认是否选中要编辑的信息!",Ext.MessageBox.WARNING);
					return;
				}

				/**
				 * edit
				 */

				var newwin1 = null;
				var editForm = new Ext.FormPanel({
					border : false,
					labelSeparator : '：',
					frame : true,
					labelWidth : 75,
					labelAlign : 'left',
					buttonAlign : 'right',
					bodyStyle : 'padding:5px',
					width : 350,
					autoScroll : true,
					fileUpload : true, // 允许上传文件
					reader : new Ext.data.JsonReader({
								root : 'results'
							}, ['entityItemId', 'entityName', 'entityDesc',
									'entityContent', 'entityArticleKeyword',
									'entityArticleSubtitle',
									'entityArticleAuthor',
									'entityDoctorPhoneNumStatus',
									'entityDoctorCreateStatus',
									'entityDoctorMsn','lbImage','showImage','titleColor','titleIcon','titleStrong','titleUnderline']),
					items : [{
								xtype : 'hidden',
								name : 'entityItemId',
								anchor : '96%'
							}, {
								xtype : 'textfield',
								fieldLabel : '标题',
								name : 'entityName',
								id:'entityName',
								allowBlank : false,
								blankText : '标题不能为空！',
								maxLength : 26,
								maxLengthText : t_invalid,
								anchor : '96%'
							},  {
								xtype : 'textfield',
								fieldLabel : '关键词',
								name : 'entityArticleKeyword',
								anchor : '96%'
							}, {
								xtype : 'textfield',
								fieldLabel : '编辑',
								name : 'entityArticleAuthor',
								anchor : '96%'
							}, {
								xtype : 'textarea',
								fieldLabel : '摘要',
								name : 'entityDesc',
								anchor : '96%'
							}, {
								xtype : 'textfield',
								fieldLabel : '来源',
								name : 'entityArticleSubtitle',
								anchor : '96%'
							}, {
								xtype : 'textfield',
								inputType : 'file',
								fieldLabel : '图片',
								name : 'file',
								anchor : '96%'
							}, {
								xtype : 'textfield',
								inputType : 'file',
								fieldLabel : '小视频',
								name : 'videoFile',
								anchor : '96%'
							}, {
								xtype : 'textfield',
								inputType : 'file',
								fieldLabel : '中视频',
								name : 'videoAndroidFile',
								anchor : '96%'
							}, {
								xtype : 'textfield',
								inputType : 'file',
								fieldLabel : '大视频',
								name : 'LBFile',
								anchor : '96%'
							}],
					buttons : [{
						id : 'btnSave',
						text : '保 存',
						handler : function() {
							if (editForm.form.isValid())// 客户端先验证数据
							{

								editForm.form.doAction('submit', {
									url : '/admin/entityItem.jhtml?method=updateEntityItemXuanShiByArticle',
									method : 'post',
									waitTitle : '请稍候',
									waitMsg : '正在提交表单数据，请稍候...',
									success : function(form, action) {
										getAlertMessage("提示","数据修改成功!",Ext.MessageBox.WARNING);
										this.disabled = false;
										newwin1.close();
											loadDs(ds1,20);
									},
									failure : formError
								})
							}
						}

					}, {
						text : '取 消',
						handler : function() {
							newwin1.close();
						}
					}]
				});
				var edit_preViewFun = function(){}
				
				// 编辑信息
				newwin1 = desktop.createWindow({
							xtype : 'window',
							title : '编辑信息',
							buttonAlign : 'right',
							closable : true,
							layout : 'fit',
							modal : 'true',
							width : 320,
							height : 380,
							closeAction : 'close',
							plain : true,
							//maximized : true,
							items : [editForm]
						});
				var row = grid1.getSelections();
				if (row == 0) {
					getAlertMessage("提示","请确认是否选中要编辑的信息!",Ext.MessageBox.WARNING);
					return;
				}
				var id = row[0].get("entityItemId");
				var urlPath = "/admin/entityItem.jhtml?method=editEntityItemByArticle";
				editForm.form.load({

							url : urlPath,
							params : {
								uId : id
							},
							method : 'post',
							success : function(form, action) {
								edit_preViewFun();
							},
							failure : function(form, action) {
								getAlertMessage("提示","数据加载失败!",Ext.MessageBox.WARNING);
							}

						});
				newwin1.show();
				
			}
		}, '-', {
			text : '删除',
			tooltip : '删除选中的一列',
			iconCls : 'remove',
			handler : function() {

				var rows = grid1.getSelectionModel().getSelections();// 返回值为
				if (rows.length == 0) {
					getAlertMessage("提示","最少选择一条信息，进行删除!",Ext.MessageBox.WARNING);
				} else {
					Ext.MessageBox.confirm('提示框', '您确定要进行该操作？', function(btn) {
						if (btn == 'yes') {

							if (rows) {
								for (var i = 0; i < rows.length; i++) {
									var conn = new Ext.data.Connection();
									conn.request({
										url : '/admin/entityItem.jhtml?method=delEntityItem',
										params : {
											entityId : rows[i]
													.get("entityItemId")
										},
										success : function(resp, opt) {
										},
										failure : function(resp, opt) {
											Ext.Msg.alert('Error',
													'Unable to delete movie');
										}
									});
								}
	loadDs(ds1,20);
							}
						}
					});
				} // 弹出对话框警告
			}
		},'-',{
			text : '生成链接',
			tooltip : '生成链接',
			cls : 'x-btn-text-icon',
			icon : '/static/images/desktop/icons/arrow-up.gif',
			handler : function() {

				var rows = grid1.getSelectionModel().getSelections();// 返回值为
				// Record
				// 数组
				if (rows.length == 0) {
					getAlertMessage("提示","最少选择一条信息，进行操作!",Ext.MessageBox.WARNING);
				} else {

					var editForm = new Ext.FormPanel({
						layout : 'form',
						border : false,
						labelSeparator : '：',
						frame : true,
						labelWidth : 60,
						labelAlign : 'left',
						buttonAlign : 'right',
						bodyStyle : 'padding:5px',
						width : 330,
						reader : new Ext.data.JsonReader({
									root : 'results'
								}, ['entityName', 'entityDesc','shortUrl']),
						items : [{
									xtype : 'textfield',
									fieldLabel : '标题',
									name : 'entityName',
									anchor : '96%'
								}, {
								xtype : 'textarea',
								fieldLabel : '摘要',
								name : 'entityDesc',
								anchor : '96%'
							}, {
									xtype : 'textfield',
									fieldLabel : '链接',
									name : 'shortUrl',
									anchor : '96%'
								}],
						buttons : [{
							text : '关 闭',
							handler : function() {
								editwin.close();
							}
						}]
					});
					editwin = new Ext.Window({
								xtype : 'window',
								title : '链接生成',
								buttonAlign : 'right',
								closable : true,
								layout : 'fit',
								modal : 'true',
								width : 350,
								height : 260,
								closeAction : 'close',
								plain : true,
								items : editForm
							});
					var rows = grid1.getSelectionModel().getSelections();
					if (rows == 0) {
						getAlertMessage("提示","请确认是否选中要作者的信息!",Ext.MessageBox.WARNING);
						return;
					}
					var id = rows[0].get("entityItemId");
					editForm.form.load({
								url : 'admin/entityItem.jhtml?method=createUrl',
								params : {
									entityId : id
								},
								method : 'post',
								success : function(form, action) {
								}
							});
					editwin.show();

				} // 弹出对话框警告

			}

		
		}, '-',title_label,'&nbsp;',title_text,btn_search_entity]
	});
	
	grid1.on('rowclick', function(grid, rowIndex, e) {
		gridrowClick(grid1, rowIndex, e, "isTop", "isTopId", "取消推荐到首页","推荐到首页");
	});
	return {
		getGrid : function(){
			return grid1;
		}
	}
}